package com.zhentao.dataintegrity.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhentao.dataintegrity.domain.dto.IntegrityTaskDTO;

import java.time.LocalDate;
import java.util.List;

public interface IntegrityTaskService {

    /**
     * 分页查询任务列表
     */
    IPage<IntegrityTaskDTO> getTaskPage(int pageNo, int pageSize, String taskTitle, String taskStatus, String triggerType);

    /**
     * 获取任务详情
     */
    IntegrityTaskDTO getTaskDetail(Long id);

    /**
     * 创建任务
     */
    Long createTask(IntegrityTaskDTO taskDTO);

    /**
     * 更新任务
     */
    boolean updateTask(IntegrityTaskDTO taskDTO);

    /**
     * 删除任务
     */
    boolean deleteTask(Long id);

    /**
     * 启用任务
     */
    boolean enableTask(Long id);

    /**
     * 禁用任务
     */
    boolean disableTask(Long id);

    /**
     * 立即运行任务
     */
    String runTaskImmediately(Long id, LocalDate startDate, LocalDate endDate);

    /**
     * 取消执行
     */
    boolean cancelExecution(String executionId);

    /**
     * 获取数据类型选项
     */
    List<IntegrityTaskDTO.DataTypeOption> getDataTypeOptions();

    /**
     * 检查任务标题是否存在
     */
    boolean checkTaskTitleExists(String taskTitle, Long excludeId);

    /**
     * 获取任务统计信息
     */
    IntegrityTaskDTO getTaskStatistics();

    /**
     * 获取最近运行的任务
     */
    List<IntegrityTaskDTO> getRecentTasks(int limit);

    /**
     * 计算下次运行时间
     */
    void calculateNextRunTime(Long taskId);

    /**
     * 执行定时任务扫描
     */
    void executeScheduledTasks();
}
